package net.lab1024.sa.admin.module.device.terminal;

import com.baomidou.mybatisplus.core.mapper.BaseMapper;
import com.baomidou.mybatisplus.extension.plugins.pagination.Page;
import net.lab1024.sa.admin.module.device.terminal.domain.DeviceTerminalEntity;
import net.lab1024.sa.admin.module.device.terminal.domain.DeviceTerminalQueryForm;
import net.lab1024.sa.admin.module.device.terminal.domain.DeviceTerminalVO;
import org.apache.ibatis.annotations.Mapper;
import org.apache.ibatis.annotations.Param;
import org.springframework.stereotype.Component;

import java.time.LocalDateTime;
import java.util.List;

@Mapper
@Component
public interface DeviceTerminalDao extends BaseMapper<DeviceTerminalEntity> {
    /**
     * 批量插入终端信息到数据库
     */
    void insertBatchSerialnos(@Param("deviceTerminalEntityList") List<DeviceTerminalEntity> deviceTerminalEntityList);

    /**
     * 分页查询
     */
    List<DeviceTerminalVO> queryPage(Page<?> page, @Param("query") DeviceTerminalQueryForm queryForm);

    /**
     * 根据设备序列号查询
     */
    DeviceTerminalEntity getBySerialno(@Param("serialno") String serialno);

    /**
     * 根据设备序列号修改用户id
     */
    void updateUserIdBySerialno(@Param("userId") Long userId, @Param("serialno") String serialno);

    /**
     * 根据设备序列号更新设备连接状态
     */
    void updateLinkFlagBySerialno(@Param("serialno") String serialno, @Param("linkFlag") boolean linkFlag);

    /**
     * 根据小于指定时间的心跳时间修改设备连接状态
     * @return
     */
    int updateLinkFlagByHeartbeatTimeLt(@Param("dateTime") LocalDateTime dateTime, @Param("linkFlag") Boolean linkFlag);
}
